import { createI18n } from 'vue-i18n'
import zhCN from './locales/zh-CN'
import enUS from './locales/en-US'

// 支持的语言
export type Locale = 'zh-CN' | 'en-US'

// 从localStorage获取保存的语言，默认为中文
const getDefaultLocale = (): Locale => {
  const saved = localStorage.getItem('app-locale')
  if (saved && ['zh-CN', 'en-US'].includes(saved)) {
    return saved as Locale
  }

  // 检测浏览器语言
  const browserLang = navigator.language
  if (browserLang.startsWith('zh')) {
    return 'zh-CN'
  } else if (browserLang.startsWith('en')) {
    return 'en-US'
  }

  return 'zh-CN' // 默认中文
}

// 创建i18n实例
const i18n = createI18n({
  legacy: false, // 使用 Composition API 模式
  locale: getDefaultLocale(),
  fallbackLocale: 'zh-CN',
  messages: {
    'zh-CN': zhCN,
    'en-US': enUS
  },
  globalInjection: true // 全局注入 $t 函数
})

export default i18n

// 切换语言的辅助函数
export const switchLocale = (locale: Locale) => {
  i18n.global.locale.value = locale
  localStorage.setItem('app-locale', locale)
  document.documentElement.setAttribute('lang', locale)
}

// 获取当前语言
export const getCurrentLocale = (): Locale => {
  return i18n.global.locale.value as Locale
}
